]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Add basic error handling to search system.
authorTor-björn Claesson <tclaesson@gmail.com>
Tue, 21 Sep 2010 09:36:24 +0000 (11:36 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Fri, 24 Sep 2010 08:01:33 +0000 (10:01 +0200)
If a search provider misbehaves, the search system fails to return any
results from any providers. Work around this.

https://bugzilla.gnome.org/show_bug.cgi?id=627950

js/ui/search.js

index 2624f09aa6dc581757e36e641e74952e70bd0e2f..f2a991524139d9318143fb90485e34c757fdf153 100644 (file)
@@ -258,16 +258,24 @@ SearchSystem.prototype = {
         if (isSubSearch) {
             for (let i = 0; i < this._previousResults.length; i++) {
                 let [provider, previousResults] = this._previousResults[i];
-                let providerResults = provider.getSubsearchResultSet(previousResults, terms);
-                if (providerResults.length > 0)
-                    results.push([provider, providerResults]);
+                try {
+                    let providerResults = provider.getSubsearchResultSet(previousResults, terms);
+                    if (providerResults.length > 0)
+                        results.push([provider, providerResults]);
+                } catch (error) {
+                    global.log ('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
+                }
             }
         } else {
             for (let i = 0; i < this._providers.length; i++) {
                 let provider = this._providers[i];
-                let providerResults = provider.getInitialResultSet(terms);
-                if (providerResults.length > 0)
-                    results.push([provider, providerResults]);
+                try {
+                    let providerResults = provider.getInitialResultSet(terms);
+                    if (providerResults.length > 0)
+                        results.push([provider, providerResults]);
+                } catch (error) {
+                    global.log ('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
+                }
             }
         }